package main.com.cyz.LinkList;

import main.com.cyz.LinkList.Bean.ListNode;

/**
 * @author fox
 * @version 1.0
 * @description
 * 力扣234
 * 给你一个单链表的头节点 head ，请你判断该链表是否为
 * 回文链表
 * 。如果是，返回 true ；否则，返回 false 。
 *
 * 示例 1：
 *
 *
 * 输入：head = [1,2,2,1]
 * 输出：true
 * 示例 2：
 *
 *
 * 输入：head = [1,2]
 * 输出：false
 *
 *
 * 提示：
 *
 * 链表中节点数目在范围[1, 105] 内
 * 0 <= Node.val <= 9
 * @date 2024/5/18 16:00
 */
public class LeetCode234 {

    public boolean isPalindrome(ListNode head) {
        boolean flag = true;
        if(head.next == null){
            return flag;
        }
        ListNode slow = head;
        ListNode fast = head;
        ListNode n1 = null;
        ListNode o1 = head;

        while(fast!=null && fast.next!=null){
            slow = slow.next;
            fast = fast.next.next;

            o1.next = n1;
            n1 = o1;
            o1 = slow;
        }

        if (fast!=null){
            slow = slow.next;
        }

        while(slow!=null){
            if(n1.val == slow.val){
                slow = slow.next;
                n1 = n1.next;
            }else{
                flag = false;
                break;
            }
        }
        return flag;
    }

}
